CITS3403/CITS5504 - Agile Web Development - Final Project
Semester 1, 2020
| Johnny Barrett | Ivy Bui | Jesse Carter | Cesar Gonzalez |
|---|---|---|---|
One of the biggest challenges faced by Computer Science and Data Science student is the ability to demostrate our coding skills by completing coding test using pen and paper, at the same time, not able to practice on a real life coding platform that provides a more realistic experience when preparing for exams and to improve our coding skills.
For this reason we decided to develop Unicode, so that professors as well as student can improve the learning experience when it comes to learn how to code.
Unicode is an online quiz platform for educational institutions that allows admin/teachers users to create and evaluate coding related tests and users/students to take tests and see results. It is design to provide a friendly experience for studens and teachers without compromising the level of complexity required for developing our coding learning experience.
Unicode provides the ability to not only test our theorical knowledge of but also our technical abilities. Teachers/admin have the ability to select from three different questions assesment types:
Another important functionality of Unicode is the ability of the admin to organize create tests by course and assign students to different courses. Also, the admin can decide when to enble test to be live(ready to take) for all students enroll in the course.
We decided to use MVC(model view controller) Arquitecture for our project. The model refers to an object referencing an entity in a database, the view is how that object is presented to the user and the controller is a linking class that builds the model from the database, prepares the view based on the model, and the updates and saves the models back to the database.
| # | User | User Story | Story Point |
|---|---|---|---|
| 1 | Admin |
I want to be able to create coding tests | 1 |
| 2 | Admin |
I want to be able to group my tests into courses | 1 |
| 3 | Admin |
I want to be able to edit, delete, rename and make live tests | 2 |
| 4 | Admin |
I want to be able to control student access to the tests | 3 |
| 5 | Admin |
I want to have a mix of questions available to me | 1 |
| 6 | Admin |
I want to have an in-built code editor | 1 |
| 7 | Admin |
I want to active and deactive tests | 10 |
| 8 | Admin |
I want to be able to manually mark tests | 4 |
| 9 | Admin |
I want to see my student’s results of my tests/courses | 5 |
| 10 | Admin |
I want to be able to display the solutions to my students after the test | 6 |
| 11 | Admin |
I want to be able to allocate marks to each question | 3 |
| 12 | Student |
I want to be able to take the test assigned to me | 7 |
| 13 | Student |
I want to be able to see my marks, and how they compare to the rest of the class | 8 |
| 14 | Student |
I want to see the solutions the tests (after) | 9 |
| User | View |
|---|---|
All |
Login |
All |
Registration |
Admin |
Course View |
Admin |
Create a new course prompt |
Admin |
Single course view (contains each test) |
Admin |
Create new test prompt |
Admin |
Test result dashboard |
Admin |
New test,add questions (3 types options, Description answers and allocated marks |
Admin |
Test preview (what it looks to students) |
Student |
Single course view (contain each available test) |
Student |
Taking test view |
Student |
Test result view |
Instructions for installation in localhost, click me to expand
https://github.com/johnnybarrels/agile-proj2.git$ git clone https://github.com/johnnybarrels/agile-proj2.git
$ cd agile-proj2
$ python -m venv venv
# To activate:
$ source venv/bin/activate
or
$ python3 -m venv venv
# To activate:
$ source venv/bin/activate
$ pip install -r requirements.txt
$ cd app-dev
$ flask db init
$ flask db migrate -m ' '
$ flask db upgrade
We have created python function to automtically populate the database (use flask shell to access python on terminal)
$ flask shell
from app.db_tools import purge_and_load
purge_and_load()
exit() $ flask run
Instructions for admin, click me to expand
Click Login
CREATE A NEW COURSE or “+” icon next to CourseCreate CourseNew TestCreate TestEdit TestDescription field (for the write a code type of questions use the code field to typer your coding question)SolutionAllocated mark for the questionSave (or Clear to restart the questions)ReturnNot Live to make sure test liveManage studentsManage studentsView testSubmit and give feedback add feedback to student and complete the markingInstructions for students, click me to expand
Sign upClick Register
LoginSubmit test⚠️ First make sure you are in the app-dev.
For testing password hashing and test creation.
python -m Tests.unittest
test_set_pw and test_set_pw2test_main_pagetest_users_can_registertest_users_cannot_unless_registeredtest_duplicate_user_registration_throws_error⚠️ Please make sure to run system test last and to manually change the Config object to TestConfing in the __init__.py overwrite existing to avoid ovewriting existing database.
Using selenium to test our app with firefox web browser - Test for student login - Test for admin login - Test for student registration and login
python -m Tests.system
We believe that UniCode have inmense potential to keep growing to become an even more robust educational tool for students and teachers. We have identify the following potential enhancement that could be impletmented in the future:
Include automated code validation to assist students to validate code syntax before submission
Enable integration with university database to promote customize solutions based on University requirements for each students
Enable sending automatic results to student via email
Add the ability of fuzzy matching for questions such as what is the outcome of the code.
Ability to classify and cluster questions and tests’s difficulty levels independently
Implement advance statistical techniques analyse the results of the test on different difficulties tier to maximise the learning evolution